package com.xinchuang.service.targetSystem;

import com.alibaba.fastjson.JSONObject;
import com.xinchuang.common.Result;
import com.xinchuang.entity.targetSystem.object.TargetAdd;
import com.xinchuang.entity.targetSystem.object.TargetFindData;
import com.xinchuang.entity.targetSystem.object.TargetPostureAdd;
import com.xinchuang.entity.targetSystem.object.TargetSubAdd;
import com.xinchuang.entity.targetSystem.system.TargetRelation;
import com.xinchuang.sqlite.entity.TargetData;
import org.springframework.web.bind.annotation.RequestBody;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * @ClassName TargetService
 * @Description: 目标接口
 * @auther xukl
 * @data 2021/4/2  10:34
 * @Version V1.0
 */
public interface TargetService {
    /**
     * 新增目标基础信息
     */
    Result<Map<String, Object>> addTarget(TargetAdd targetAdd, String userId) throws SQLException;

    /**
     * 查询目标列表
     */
    Result<Map<String, Object>> getList(TargetFindData targetFindData);

    /**
     * 更新目标基础信息
     */
    Result<Map<String, Object>> updateTarget(TargetAdd targetAdd, String userId) throws SQLException;

    /**
     * 删除目标信息
     */
    Result<Map<String, Object>> deleteTarget(List<String> ids);

    /**
     * 查询目标基础信息
     */
    Result selectTarget(String targetId) throws SQLException;

    /**
     * 查询目标详细信息
     */
    Result selectTargetSpecial(String targetId) throws SQLException;

    /**
     * 新增/更新子基础信息
     */
    Result addTargetSub(TargetSubAdd targetSubAdd, String userId) throws SQLException;

    /**
     * 删除子信息
     */
    Result<String> deleteSub(String targetId, String subId) throws SQLException;

    /**
     * 新增/更新态势基础信息
     */
    Result addTargetPosture(TargetPostureAdd targetPostureAdd, String userId);

    /**
     * 删除态势信息
     */
    Result<String> deletePosture(String targetId, String postureId);

    /**
     * 新增关联
     */
    Result<Map<String, Object>> addRelation(String targetId, List<TargetRelation> list);

    /**
     * 查询子列表信息
     */
    Result<List<Map<String, Object>>> selectTargetSubList(String targetId);

    /**
     * 查询态势子列表信息
     * @param targetId
     * @return
     */
    Result selectTargetPostureList(String targetId);

    /**
     * 新增/更新详细信息
     */
    Result<Map<String, Object>> addTargetElse(TargetAdd targetAdd, String userId);

    /**
     * 新增/更新子详细信息
     */
    Result<Map<String, Object>> targetSubDetailMaintain(String targetId, String subId, List<TargetData> list, String userId) throws SQLException;

    /**
     * 新增/更新子详细信息
     */
    Result<Map<String, Object>> targetPostureDetailMaintain(String targetId, String postureId, List<TargetData> list, String userId);


    /**
     * 查询子基础信息
     */
    Result<Map<String, Object>> getSubBase(String targetId, String subId) throws SQLException;

    /**
     * 查询子详细信息
     */
    Result<Map<String, Object>> getSubDetail(String targetId, String subId) throws SQLException;

    /**
     * 查询态势信息
     */
    Result<Map<String, Object>> getPostureBase(String targetId, String postureId);

    /**
     * 查询态势详细信息
     */
    Result<Map<String, Object>> getPostureDetail(String targetId, String postureId);

    /**
     * 删除单个关联信息
     */
    Result deleteTargetRelation(String id);

    /**
     * 批量目标上图展示
     *
     * @return
     */
    Result<List<Map<String, Object>>> getTargetToMap(List<String> targetIdList);

    /**
     * 批量目标上图展示
     *
     * @return
     */
    Result<List<Map<String, Object>>> toMap(int pageNum, int pageSize, String keyword, String country, String targetType, Integer common);

    /**
     * 系统/体系全部上图
     * @param id
     * @return
     */
    Result sysToMapAll(String id, String sysId, Integer type);

    /**
     * 单个目标上图展示
     *
     * @param targetId
     * @return
     */
    Result<Map<String, Object>> getTargetAndSubOneToMap(String targetId) throws SQLException;

    /**
     * 体系上图展示
     */
    Result getSystemToMap(String sysId, String targetId);

    /**
     * 预生成子目标
     **/
    Result preSubTask(String targetId, String userId) throws SQLException;

    /**
     * 自动生成目标描述信息
     */
    Result autoRemark(String targetId, String subId, int type, String userId) throws SQLException;

    /**
     * 判断目标名称
     */
    boolean juageTargetName(String targetId, String name);

    /**
     * 目标信息生成
     *
     * @param targetId
     * @return
     */
    String getTargetMessage(String targetId, String message);

    /**
     * 获取子目标
     * @param targetId
     * @return
     */
    Result getSubList(String targetId);

    /**
     * 查询目标或者子目标所有信息
     * @param targetId
     * @param subId
     * @return
     */
    Result getTargetOrSubAllMessage(String targetId, String subId);

    /**
     * 查询目标指标参数
     * @param targetId
     * @return
     */
    Result getTargetIndex(String targetId);

    /**
     * 重置目标的指标属性
     * @param targetId
     * @return
     */
    Result resetTargetIndex(String targetId);

    /**
     * 查询子目标下拉
     * @param json
     * @return
     */
    Result subPull(JSONObject json);

    /**
     * 新增子目标关联关系
     * @param json
     * @return
     */
    Result addSubRelationShip(JSONObject json);

    /**
     * 删除子目标关联关系
     * @param json
     * @return
     */
    Result deleteRelationShip(JSONObject json);

    /**
     * 查询子目标关联关系
     * @param json
     * @return
     */
    Result selectSubRelationShip(JSONObject json);

    /**
     * 查询目标关系Echar图
     * @param targetId
     * @return
     */
    Map<String, Object> selectSubRelationShip(String targetId);

}















